home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / FileManagerSPI.p < prev    next >
Text File  |  1996-05-01  |  45KB  |  707 lines

  1. {
  2.      File:        FileManagerSPI.p
  3.  
  4.      Contains:    FileManager extended interface
  5.  
  6.      Version:    Technology:    System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT FileManagerSPI;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __FILEMANAGERSPI__}
  28. {$SETC __FILEMANAGERSPI__ := 1}
  29.  
  30. {$I+}
  31. {$SETC FileManagerSPIIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __KERNEL__}
  35. {$I Kernel.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __FILEMANAGERTYPES__}
  38. {$I FileManagerTypes.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __FILES__}
  41. {$I Files.p}
  42. {$ENDC}
  43.  
  44. {$PUSH}
  45. {$ALIGN POWER}
  46. {$LibExport+}
  47.  
  48. {  You can use FileManager.h or FileManagerSPI.h, but not both  }
  49. {$IFC UNDEFINED __FILEMANAGER__ }
  50. {$IFC FOR_SYSTEM8_PREEMPTIVE }
  51. { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C O N T A I N E R S <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }
  52. {
  53. ****************************************************************************
  54.     OBJECTS
  55. ****************************************************************************
  56. }
  57. {
  58.     Function:    FSObjectRefClone
  59.     Purpose:    Return a copy of an FSObjectRef such that the copy also needs to be disposed.
  60.     Inputs:
  61.                 object_t        The object ref to be cloned.
  62.     Outputs:
  63.                 clone_o            Copy of object_t.
  64.     Notes:
  65.                 The value returned is the same value passed as input in object_t.  This call
  66.                 would typically be used to balance a future call to FSObjectRefDispose.  Some
  67.                 examples where it might be used:
  68.                     * A called procedure needs to save an FSObjectRef for future use, but the
  69.                       calling conventions dictate that the caller is responsible for disposing
  70.                       of the ref.  The called function could call FSObjectRefClone to make its
  71.                       copy.  The caller can safely dispose of the ref, yet the callee can use
  72.                       the ref until doing its own dispose.
  73.                     * In object-oriented programming, an object could be passed an FSObjectRef
  74.                       in its constructor.  The destructor would be expected to dispose the ref,
  75.                       but so would the routine that created the object.  FSObjectRefClone could
  76.                       be used in the constructor.
  77.                 
  78.                 The returned FSObjectRef is registered to the calling process (as must object_t).
  79. }
  80. FUNCTION FSObjectRefClone(object_t: FSObjectRef; VAR clone_o: FSObjectRef): OSStatus; C;
  81. FUNCTION FSObjectRefCloneAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR clone_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  82. {
  83.     Function:    FSObjectRefDispose
  84.     Purpose:    Dispose of an FSObjectRef previously returned to a process.
  85.     Inputs:
  86.                 object_t        The object ref to be disposed.
  87.     Outputs:
  88.     Notes:
  89.                 A process must dispose of all FSObjectRefs returned to it.  The FSObjectRefs
  90.                 may be returned as explicit output parameters, or as properties.  If a ref
  91.                 is returned several times for a given object, it must be disposed for each
  92.                 time it was returned.
  93.                 
  94.                 When all refs to a given object are disposed, the File Manager will dispose
  95.                 of any resources it allocated in order to operate on that object.  All refs
  96.                 for a process will be automatically disposed upon process termination.
  97.                 
  98.                 For refs returned as properties (especially when iterating over muliple
  99.                 objects), the FSObjectRefDisposeBulk call may be more convenient.
  100. }
  101. FUNCTION FSObjectRefDispose(object_t: FSObjectRef): OSStatus; C;
  102. FUNCTION FSObjectRefDisposeAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  103. {
  104.     Function:    FSObjectRefDisposeBulk
  105.     Purpose:    Dispose of many FSObjectRefs, using a list of property descriptors.
  106.                 (Typically used to dispose all refs returned by FSObjectIterate).
  107.     Inputs:
  108.                 objectCount_i        Number of objects returned by FSObjectIterate.
  109.                 propertyCount_i        Number of properties per object, as passed to FSObjectIterate.
  110.                 statusBuffer_i        Status buffer as returned by FSObjectIterate.
  111.                 properties_i        List of property descriptors passed to FSObjectIterate.
  112.                 propertiesBuffer_i    Buffer where property values were returned by FSObjectIterate.
  113.     Outputs:
  114.                 statusBuffer_o        Error status for each property of each object.
  115.     Notes:
  116.                 This call is intended to make it easy to dispose of FSObjectRefs returned by an
  117.                 FSObjectIterate call.  You would pass the same property count, property descriptor
  118.                 list and property value buffer as was passed to FSObjectIterate.  You also pass the
  119.                 object count and status buffer as returned by FSObjectIterate (since these tell which
  120.                 properties were actually returned).
  121.                 
  122.                 Any property in properties_i that does not contain an FSObjectRef is ignored.  Any
  123.                 property that does not have E_NoError in its propertyStatus field (in statusBuffer_i)
  124.                 is ignored.
  125.                 
  126.                 All elements of statusBuffer_o will be set.  If the property was ignored (as described
  127.                 above), then its propertyStatus is set to E_NoError; otherwise, it is set based on the
  128.                 attempt to dispose of the ref.  The propertyValueActualSize fields are all set to 0.
  129.  
  130. }
  131. FUNCTION FSObjectRefDisposeBulk(objectCount_i: ItemCount; propertyCount_i: ItemCount; {CONST}VAR statusBuffer_i: FSBufferDescriptor; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  132. {  }
  133. FUNCTION FSObjectRefDisposeBulkAsync(objectCount_i: ItemCount; propertyCount_i: ItemCount; {CONST}VAR statusBuffer_i: FSBufferDescriptor; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  134. {
  135.     Function:    FSObjectRefRegister
  136.     Purpose:    Allow an FSObjectRef to be used by another process.
  137.     Inputs:
  138.                 senderObject_t        The object ref.
  139.                 receiverPid_i        The other process that will be using senderObject_t.
  140.     Outputs:
  141.     Notes:
  142.                 This call allows one process to send an FSObjectRef to another process
  143.                 such that the other process can use the FSObjectRef itself.  The process
  144.                 specified by receiverPid_i must also dispose of senderObject_t.  The File
  145.                 Manager acts as if senderObject_t has been returned to receiverPid_i.
  146.  
  147.  
  148.  
  149.  
  150.  
  151.                 You might use this call if you have several processes where one process
  152.                 (typically a server of some kind) obtains FSObjectRefs for use by other
  153.                 processes (typically clients of that server).  If the other process (as
  154.                 specified by receiverPid_i) won't actually call the File Manager with
  155.                 that FSObjectRef, then it doesn't need to be registered to that process.
  156.  
  157.                 It would also be possible to have the server process make all of the
  158.                 calls to the File Manager.  FSObjectRefs could still be passed between
  159.                 client and server, but if the clients never use the refs directly, then
  160.                 there would be no need to register the refs to those clients.  (But beware:
  161.                 the server would still be responsible for disposing of all refs returned to
  162.                 it; the server would probably have some cleanup and disposal to do if one
  163.                 of its client processes were to terminate.)
  164. }
  165. FUNCTION FSObjectRefRegister(senderObject_t: FSObjectRef; receiverPid_i: KernelProcessID): OSStatus; C;
  166. FUNCTION FSObjectRefRegisterAsync(senderObject_t: FSObjectRef; receiverPid_i: KernelProcessID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  167. {
  168. ============================================================================
  169.     Volume Sets
  170. ============================================================================
  171. }
  172. {
  173.     Function:    FSVolumeSetGetInformation
  174.     Purpose:    Returns an FSObjectRef for a Volume Set specified by an
  175.                 FSVolumeSetObjID.
  176.     Inputs:
  177.                 volumeSet_t                The volume set.
  178.     Outputs:
  179.                 object_o                Object ref for the volume set.
  180.                 includesBootVolume_o    True if the volume set includes the boot volume.
  181.     Notes:
  182.                 There is currently only one volume set.  In the future there could be others
  183.                 (perhaps file servers; perhaps to support multiple local users).
  184. }
  185. FUNCTION FSVolumeSetGetInformation(volumeSet_t: FSVolumeSetObjID; VAR includesBootVolume_o: BOOLEAN; VAR object_o: FSObjectRef): OSStatus; C;
  186. FUNCTION FSVolumeSetGetInformationAsync(volumeSet_t: FSVolumeSetObjID; {CONST}VAR completion_i: KernelNotification; VAR includesBootVolume_o: BOOLEAN; VAR object_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  187. {
  188. ============================================================================
  189.     Volumes
  190. ============================================================================
  191. }
  192. {  }
  193. FUNCTION FSVolumeGetInformation(volume_t: FSVolumeObjID; VAR object_o: FSObjectRef): OSStatus; C;
  194. FUNCTION FSVolumeGetInformationAsync(volume_t: FSVolumeObjID; {CONST}VAR completion_i: KernelNotification; VAR objectRef_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  195. {   }
  196. FUNCTION FSVolumeMount(device_t: ObjectID; requiredCapabilities_i: FSVolumeCapabilities; {CONST}VAR constraints_i: FSMountAccessConstraints; VAR volume_o: FSObjectRef): OSStatus; C;
  197. FUNCTION FSVolumeMountAsync(device_t: ObjectID; requiredCapabilities_i: FSVolumeCapabilities; {CONST}VAR constraints_i: FSMountAccessConstraints; {CONST}VAR completion_i: KernelNotification; VAR volume_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  198. {   }
  199. FUNCTION FSVolumeUnmount(volume_t: FSObjectRef): OSStatus; C;
  200. FUNCTION FSVolumeUnmountAsync(volume_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  201. {
  202. ============================================================================
  203.     Folders
  204. ============================================================================
  205. }
  206. {   }
  207. FUNCTION FSFolderCreateWithProperties(container_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor; VAR folder_o: FSObjectRef): OSStatus; C;
  208. FUNCTION FSFolderCreateWithPropertiesAsync(container_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR folder_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  209. {
  210. ============================================================================
  211.     Files
  212. ============================================================================
  213. }
  214. {   }
  215. FUNCTION FSFileCreateWithProperties(container_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor; VAR file_o: FSObjectRef): OSStatus; C;
  216. FUNCTION FSFileCreateWithPropertiesAsync(container_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR file_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  217. {
  218. ============================================================================
  219.     Folder and File Requests
  220. ============================================================================
  221. }
  222. {  }
  223. FUNCTION FSObjectCopy(sourceObject_t: FSObjectRef; container_i: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor; VAR newObject_o: FSObjectRef): OSStatus; C;
  224. FUNCTION FSObjectCopyAsync(sourceObject_t: FSObjectRef; container_i: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR newObject_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  225. {
  226.     Function:    FSObjectDelete
  227.     Purpose:    Deletes an object.  The FSObjectRef is NOT disposed; you must still dispose it yourself.
  228.                 Further attempts to use the ref will return errors (such as E_ObjectNotFound).
  229.  
  230.     Inputs:
  231.                 object_t        The object to be deleted.
  232.     Outputs:
  233. }
  234. FUNCTION FSObjectDelete(object_t: FSObjectRef): OSStatus; C;
  235. FUNCTION FSObjectDeleteAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  236. {  }
  237. FUNCTION FSObjectMove(sourceObject_t: FSObjectRef; container_i: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  238. FUNCTION FSObjectMoveAsync(sourceObject_t: FSObjectRef; container_i: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertyValues_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  239. {
  240. ****************************************************************************
  241.     PROPERTIES
  242. ****************************************************************************
  243. }
  244. {
  245. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  246.     Object Properties
  247. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  248. }
  249. {  }
  250. FUNCTION FSObjectCreateProperties(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  251. FUNCTION FSObjectCreatePropertiesAsync(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  252. {  }
  253. FUNCTION FSObjectDeleteProperties(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSProperty; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  254. FUNCTION FSObjectDeletePropertiesAsync(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSProperty; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  255. { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C a p a b i l i t i e s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }
  256. {
  257. ****************************************************************************
  258.     PROPERTY ACCESS METHODS
  259. ****************************************************************************
  260. }
  261. {
  262. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  263.     Object Property Simple Values
  264. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  265. }
  266. {  }
  267. FUNCTION FSObjectGetProperties(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  268. FUNCTION FSObjectGetPropertiesAsync(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR completion_i: KernelNotification; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  269. {  }
  270. FUNCTION FSObjectSetProperties(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  271. FUNCTION FSObjectSetPropertiesAsync(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR propertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  272. {
  273. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  274.     Object Property Fork Values
  275. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  276. }
  277. {
  278. ============================================================================
  279.     Stream-based Access Method
  280. ============================================================================
  281. }
  282. {   }
  283. FUNCTION FSStreamAllocate(stream_t: FSStreamObjID; {CONST}VAR start_i: FSForkPositionDescriptor; length_i: FSSize; policy_i: FSForkAllocationPolicy; VAR actualAllocation_o: FSSize): OSStatus; C;
  284. FUNCTION FSStreamAllocateAsync(stream_t: FSStreamObjID; {CONST}VAR start_i: FSForkPositionDescriptor; length_i: FSSize; policy_i: FSForkAllocationPolicy; {CONST}VAR completion_i: KernelNotification; VAR actualAllocation_o: FSSize; VAR requestID_o: MessageID): OSStatus; C;
  285. {
  286.     Function:    FSStreamClose
  287.     Purpose:    Close a stream previously opened with FSStreamOpen or FSStreamOpenWithConstraints.
  288.     Inputs:
  289.                 stream_t            The stream to close.
  290.     Outputs:
  291.     Notes:
  292.                 Any data written to the stream is flushed (written by the File Manager) before the
  293.                 stream is closed.  The FSStreamObjID, stream_t, may no longer be used.  Any resources
  294.                 allocated by the File Manager for use by this stream will be disposed.
  295. }
  296. FUNCTION FSStreamClose(stream_t: FSStreamObjID): OSStatus; C;
  297. FUNCTION FSStreamCloseAsync(stream_t: FSStreamObjID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  298. {
  299.     Function:    FSStreamFlush
  300.     Purpose:    Any data written to the stream will be written by the File Manager.
  301.     Inputs:
  302.                 stream_t            The stream to flush.
  303.     Outputs:
  304.     Notes:
  305.                 Stream data may still reside in the File Manager's caches, but any changes will have
  306.                 been written out by the File Manager.  Note that the underlying device's driver, or
  307.                 the device itself, may cache some data, so the File Manager cannot guarantee that
  308.                 all data has actually been written to the underlying media.
  309.                 
  310.                 Other information about the object (such as its modification date) might not be flushed
  311.                 by this call, though any volume-level data needed to access the stream will be.
  312.  
  313.  
  314. }
  315. FUNCTION FSStreamFlush(stream_t: FSStreamObjID): OSStatus; C;
  316. FUNCTION FSStreamFlushAsync(stream_t: FSStreamObjID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  317. {   }
  318. FUNCTION FSStreamGetEOF(stream_t: FSStreamObjID; VAR currentEOF_o: FSOffset): OSStatus; C;
  319. FUNCTION FSStreamGetEOFAsync(stream_t: FSStreamObjID; {CONST}VAR completion_i: KernelNotification; VAR currentEOF_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  320. {   }
  321. FUNCTION FSStreamGetInformation(stream_t: FSStreamObjID; VAR object_o: FSObjectRef; VAR fork_o: FSProperty; VAR constraints_o: FSForkAccessConstraints): OSStatus; C;
  322. FUNCTION FSStreamGetInformationAsync(stream_t: FSStreamObjID; {CONST}VAR completion_i: KernelNotification; VAR object_o: FSObjectRef; VAR fork_o: FSProperty; VAR constraints_o: FSForkAccessConstraints; VAR requestID_o: MessageID): OSStatus; C;
  323. {
  324.     Function:    FSStreamGetMark
  325.     Purpose:    Returns the current mark (position offset) for a stream.
  326.     Inputs:
  327.                 stream_t            The stream.
  328.     Outputs:
  329.                 currentMark_o        Current offset in the stream, stream_t.
  330.     Notes:
  331.                 This call returns the offset from the start of the file that would be
  332.                 equivalent to using a FSForkPositionDescriptor whose positionOffset is
  333.                 0, and whose positionMode is kFSFromMark.  A stream's mark is set to
  334.                 the byte following the last read or write, or via FSStreamSetMark.
  335. }
  336. FUNCTION FSStreamGetMark(stream_t: FSStreamObjID; VAR currentMark_o: FSOffset): OSStatus; C;
  337. FUNCTION FSStreamGetMarkAsync(stream_t: FSStreamObjID; {CONST}VAR completion_i: KernelNotification; VAR currentMark_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  338. {   }
  339. FUNCTION FSStreamLockRange(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; length_i: FSSize; options_i: FSRangeLockOptions; VAR rangeStart_o: FSOffset; VAR actualLength_o: FSSize): OSStatus; C;
  340. FUNCTION FSStreamLockRangeAsync(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; length_i: FSSize; options_i: FSRangeLockOptions; {CONST}VAR completion_i: KernelNotification; VAR rangeStart_o: FSOffset; VAR actualLength_o: FSSize; VAR requestID_o: MessageID): OSStatus; C;
  341. {   }
  342. FUNCTION FSStreamOpenWithConstraints(object_t: FSObjectRef; {CONST}VAR fork_i: FSProperty; {CONST}VAR constraints_i: FSForkAccessConstraints; VAR stream_o: FSStreamObjID): OSStatus; C;
  343. FUNCTION FSStreamOpenWithConstraintsAsync(object_t: FSObjectRef; {CONST}VAR fork_i: FSProperty; {CONST}VAR constraints_i: FSForkAccessConstraints; {CONST}VAR completion_i: KernelNotification; VAR stream_o: FSStreamObjID; VAR requestID_o: MessageID): OSStatus; C;
  344. {   }
  345. FUNCTION FSStreamRead(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; options_i: FSStreamIOOptions; VAR buffer_o: FSBufferDescriptor; VAR actualLength_o: ByteCount; VAR currentMark_o: FSOffset): OSStatus; C;
  346. FUNCTION FSStreamReadAsync(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; options_i: FSStreamIOOptions; {CONST}VAR completion_i: KernelNotification; VAR buffer_o: FSBufferDescriptor; VAR actualLength_o: ByteCount; VAR currentMark_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  347. {   }
  348. FUNCTION FSStreamReleaseAllocation(stream_t: FSStreamObjID; {CONST}VAR start_i: FSForkPositionDescriptor; length_i: FSSize; VAR actualLength_o: FSSize): OSStatus; C;
  349. FUNCTION FSStreamReleaseAllocationAsync(stream_t: FSStreamObjID; {CONST}VAR start_i: FSForkPositionDescriptor; length_i: FSSize; {CONST}VAR completion_i: KernelNotification; VAR actualLength_o: FSSize; VAR requestID_o: MessageID): OSStatus; C;
  350. {   }
  351. FUNCTION FSStreamSetEOF(stream_t: FSStreamObjID; {CONST}VAR EOF_i: FSForkPositionDescriptor; policy_i: FSForkAllocationPolicy; VAR currentEOF_o: FSOffset): OSStatus; C;
  352. FUNCTION FSStreamSetEOFAsync(stream_t: FSStreamObjID; {CONST}VAR EOF_i: FSForkPositionDescriptor; policy_i: FSForkAllocationPolicy; {CONST}VAR completion_i: KernelNotification; VAR currentEOF_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  353. {
  354.     Function:    FSStreamSetMark
  355.     Purpose:    Sets the current mark (position offset) for a stream.
  356.     Inputs:
  357.                 stream_t            The stream.
  358.                 newPosition_i        The new position of the stream's mark.
  359.                 options_i
  360.     Outputs:
  361.                 originalMark_o        The stream's mark, before being changed (relative
  362.                                     to the start of the stream).
  363.                 currentMark_o        The new mark, relative to the start of the stream.
  364.     Notes:
  365.                 A stream's mark is usually used for sequential access to a stream,
  366.                 or to position relative to the ending position of the last operation
  367.                 on a stream.  This call lets you explicitly set the mark for future
  368.                 operations that will operate relative to the current mark.
  369.                 
  370.                 If kFSMarkPinToEOF is set in options_i, and the new position specified
  371.                 by newPosition_i would exceed the current end of the stream (also known
  372.                 as End Of File or EOF), then the mark will be set to the EOF and E_NoError
  373.                 is returned.  Otherwise, an error will returned.  The mark may never be
  374.                 set past the end of the stream.
  375.  
  376.  
  377. }
  378. FUNCTION FSStreamSetMark(stream_t: FSStreamObjID; {CONST}VAR newPosition_i: FSForkPositionDescriptor; options_i: FSStreamSetMarkOptions; VAR originalMark_o: FSOffset; VAR currentMark_o: FSOffset): OSStatus; C;
  379. FUNCTION FSStreamSetMarkAsync(stream_t: FSStreamObjID; {CONST}VAR newPosition_i: FSForkPositionDescriptor; options_i: FSStreamSetMarkOptions; {CONST}VAR completion_i: KernelNotification; VAR originalMark_o: FSOffset; VAR currentMark_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  380. {   }
  381. FUNCTION FSStreamUnlockRange(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; length_i: FSSize; options_i: FSRangeLockOptions): OSStatus; C;
  382. FUNCTION FSStreamUnlockRangeAsync(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; length_i: FSSize; options_i: FSRangeLockOptions; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  383. {   }
  384. FUNCTION FSStreamWrite(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; options_i: FSStreamIOOptions; {CONST}VAR buffer_i: FSBufferDescriptor; VAR actualLength_o: ByteCount; VAR currentMark_o: FSOffset): OSStatus; C;
  385. FUNCTION FSStreamWriteAsync(stream_t: FSStreamObjID; {CONST}VAR position_i: FSForkPositionDescriptor; options_i: FSStreamIOOptions; {CONST}VAR buffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR actualLength_o: ByteCount; VAR currentMark_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  386. {
  387. ============================================================================
  388.     Memory-mapped Access Method(Backing Store Requests)
  389. ============================================================================
  390. }
  391. {
  392.     Function:    FSMappedFileClose
  393.     Purpose:    Closes an access path to a file used for backing store.
  394.     Inputs:
  395.                 backingStore_t        The backing store object.
  396.     Outputs:
  397.     Notes:
  398.                 Basically the same as FSStreamClose, but for a backing store.
  399.                 
  400.                 All data written to this backing store (by writing to pages backed by
  401.                 this store) will be flushed (written) by the File Manager.
  402. }
  403. FUNCTION FSMappedFileClose(backingStore_t: FSBackingStoreObjID): OSStatus; C;
  404. FUNCTION FSMappedFileCloseAsync(backingStore_t: FSBackingStoreObjID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  405. {
  406.     Function:    FSMappedFileGetEOF
  407.     Purpose:    Return the EOF (length) of the fork being accessed by the given backing store.
  408.     Inputs:
  409.                 backingStore_t        The backing store used to access the fork.
  410.     Outputs:
  411.                 currentEOF_o        The size, in bytes, of the fork.
  412.     Notes:
  413.                 Since access to a fork via a backing store (i.e. memory mapped file access) is
  414.                 accomplished by directly accessing memory pages, the virtual memory system must
  415.                 read and write entire pages.  If the last page is modified, the entire page is
  416.                 written, resulting in the fork size being rounded up to a multiple of a page size.
  417.                 Similarly for access to pages beyond the fork's EOF.
  418.                 
  419.                 This call returns the current EOF (length) of the underlying fork.  This may be
  420.                 set implicitly by writing to backed pages, or by using the FSBackingStoreSetEOF
  421.                 call.  It may also be changed by streams opened to the same fork.
  422. }
  423. FUNCTION FSMappedFileGetEOF(backingStore_t: FSBackingStoreObjID; VAR currentEOF_o: FSOffset): OSStatus; C;
  424. FUNCTION FSMappedFileGetEOFAsync(backingStore_t: FSBackingStoreObjID; {CONST}VAR completion_i: KernelNotification; VAR currentEOF_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  425. {   }
  426. FUNCTION FSMappedFileGetInformation(backingStore_t: FSBackingStoreObjID; VAR object_o: FSObjectRef; VAR fork_o: FSProperty; VAR constraints_o: FSForkAccessConstraints): OSStatus; C;
  427. FUNCTION FSMappedFileGetInformationAsync(backingStore_t: FSBackingStoreObjID; {CONST}VAR completion_i: KernelNotification; VAR object_o: FSObjectRef; VAR fork_o: FSProperty; VAR constraints_o: FSForkAccessConstraints; VAR requestID_o: MessageID): OSStatus; C;
  428. {
  429.     Function:    FSMappedFileSetEOF
  430.     Purpose:    Sets the EOF (length) of the fork being accessed by the given backing store.
  431.     Inputs:
  432.                 backingStore_t        The backing store used to access the fork.
  433.                 EOF_i                The new length (EOF) of the fork.
  434.                 policy_i            Controls how space should be allocated (if the new EOF
  435.                                     is larger than the current EOF).
  436.     Outputs:
  437.                 currentEOF_o        The new size, in bytes, of the fork.
  438.     Notes:
  439.                 Since access to a fork via a backing store (i.e. memory mapped file access) is
  440.                 accomplished by directly accessing memory pages, the virtual memory system must
  441.                 read and write entire pages.  If the last page is modified, the entire page is
  442.                 written, resulting in the fork size being rounded up to a multiple of a page size.
  443.                 Similarly for access to pages beyond the fork's EOF.
  444.                 
  445.                 This call allows the EOF to be explicitly set for a fork being accessed via a
  446.                 backing store.  Any data beyond the EOF will not actually be written to the fork.
  447.                 The File Manager has no way to detect whether access to pages occurs beyond the
  448.                 EOF; it is a programming error to access bytes beyond the EOF via a backing store.
  449.                 
  450.                 This call would typically be used when a fork has been memory mapped to enable
  451.                 convenient access to a file's data structures as if it were completely in memory.
  452.                 You would make all changes to the data structures, then use this call to indicate
  453.                 the number of bytes that are valid and should be written to the fork.
  454. }
  455. FUNCTION FSMappedFileSetEOF(backingStore_t: FSBackingStoreObjID; {CONST}VAR EOF_i: FSForkPositionDescriptor; policy_i: FSForkAllocationPolicy; VAR currentEOF_o: FSOffset): OSStatus; C;
  456. FUNCTION FSMappedFileSetEOFAsync(backingStore_t: FSBackingStoreObjID; {CONST}VAR EOF_i: FSForkPositionDescriptor; policy_i: FSForkAllocationPolicy; {CONST}VAR completion_i: KernelNotification; VAR currentEOF_o: FSOffset; VAR requestID_o: MessageID): OSStatus; C;
  457. {   }
  458. FUNCTION FSMappedFileOpenWithConstraints(object_t: FSObjectRef; {CONST}VAR fork_i: FSProperty; {CONST}VAR constraints_i: FSForkAccessConstraints; VAR backingStore_o: FSBackingStoreObjID): OSStatus; C;
  459. FUNCTION FSMappedFileOpenWithConstraintsAsync(object_t: FSObjectRef; {CONST}VAR fork_i: FSProperty; {CONST}VAR constraints_i: FSForkAccessConstraints; {CONST}VAR completion_i: KernelNotification; VAR backingStore_o: FSBackingStoreObjID; VAR requestID_o: MessageID): OSStatus; C;
  460. {
  461. ****************************************************************************
  462.     NAVIGATION & ENUMERATION
  463. ****************************************************************************
  464. }
  465. {
  466. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  467.     Object Iteration
  468. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  469. }
  470. {  }
  471. FUNCTION FSObjectIterate(iterator_t: FSObjectIteratorObjID; objectCount_i: ItemCount; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; VAR actualObjectCount_o: ItemCount; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  472. FUNCTION FSObjectIterateAsync(iterator_t: FSObjectIteratorObjID; objectCount_i: ItemCount; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; {CONST}VAR completion_i: KernelNotification; VAR actualObjectCount_o: ItemCount; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor; VAR requestID_o: MessageID): OSStatus; C;
  473. {
  474.     Function:    FSObjectIteratorChangeCurrentScope
  475.     Purpose:    Move an object iterator into or out of a container.
  476.     Inputs:
  477.                 iterator_t        The object iterator.
  478.                 movement_i        The direction to move: into or out of a container.
  479.     Outputs:
  480.     Notes:
  481.                 If movement_i is kFSObjectEnter, then the iterator must be positioned on
  482.                 an object that is capable of containing other objects; it does not need to
  483.                 actually contain any objects at that time.  That object will become the new
  484.                 current scope of the iterator and it will be in Start Of Iteration state
  485.                 (meaning that all objects in the current scope have yet to be returned).
  486.                 The iterator will not be positioned on any object.
  487.                 
  488.                 If movement_i is kFSObjectExit,  then the current scope will become the object
  489.                 that contains the current scope; the iterator's new position will be the object
  490.                 that was the current scope.  If the current scope and the outermost scope were
  491.                 the same, then the outermost scope will also change to the new current scope and
  492.                 E_ExitIteratorScope is returned (so that you realize you will be iterating outside
  493.                 of the scope that you used to create the iterator; the iterator remains usable).
  494.                 
  495.                 Object iterators keep track of all of the objects between the outermost scope and
  496.                 the current scope (this is known as the "scope stack").  If any object in the scope
  497.                 stack is moved, the iterator is invalidated and will return the error
  498.                 E_IteratorScopeException until it has been explicitly fixed (by FSObjectIteratorRecreate)
  499.                 or disposed.  This call adds or removes objects from the scope stack.
  500. }
  501. FUNCTION FSObjectIteratorChangeCurrentScope(iterator_t: FSObjectIteratorObjID; movement_i: FSObjectIteratorMovement): OSStatus; C;
  502. FUNCTION FSObjectIteratorChangeCurrentScopeAsync(iterator_t: FSObjectIteratorObjID; movement_i: FSObjectIteratorMovement; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  503. {  }
  504. FUNCTION FSObjectIteratorClone(iterator_t: FSObjectIteratorObjID; VAR clone_o: FSObjectIteratorObjID): OSStatus; C;
  505. FUNCTION FSObjectIteratorCloneAsync(iterator_t: FSObjectIteratorObjID; {CONST}VAR completion_i: KernelNotification; VAR clone_o: FSObjectIteratorObjID; VAR requestID_o: MessageID): OSStatus; C;
  506. {
  507.     Function:    FSObjectIteratorCreate
  508.     Purpose:    Create an iterator for iterating over objects.
  509.     Inputs:
  510.                 outermostScope_t        The initial outermost scope and current scope.
  511.                 options_i                Controls whether the iterator will traverse objects in
  512.                                         a single container or all embedded (nested) containers.
  513.                                         Also controls which kinds of objects will be returned.
  514.     Outputs:
  515.                 iterator_o                The object iterator.
  516.     Notes:
  517.                 The outermost scope and current scope of the iterator are set to outermostScope_t.
  518.                 The iterator is not positioned on any object, though it is inside outermostScope_t.
  519.                 OutermostScope_t must be an object capable of containing other objects (such as the
  520.                 Universe, a volume set, a volume, or a folder).  The iterator is put into "Start Of
  521.                 Iteration" state, meaning that all objects in the current scope have yet to be
  522.                 returned.
  523.                 
  524.                 The File Manager allocates resources and maintains state for every iterator.  When
  525.                 you have finished using an iterator, you should call FSObjectIteratorDispose to dispose
  526.                 of it.
  527. }
  528. FUNCTION FSObjectIteratorCreate(outermostScope_t: FSObjectRef; options_i: FSObjectIteratorCreationOptions; VAR iterator_o: FSObjectIteratorObjID): OSStatus; C;
  529. FUNCTION FSObjectIteratorCreateAsync(outermostScope_t: FSObjectRef; options_i: FSObjectIteratorCreationOptions; {CONST}VAR completion_i: KernelNotification; VAR iterator_o: FSObjectIteratorObjID; VAR requestID_o: MessageID): OSStatus; C;
  530. {
  531.     Function:    FSObjectIteratorDispose
  532.     Purpose:    Dispose of an object iterator.
  533.     Inputs:
  534.                 iterator_t        The object iterator.
  535.     Outputs:
  536.     Notes:
  537.                 The File Manager will dispose of the iterator and release any resources
  538.                 allocated to the iterator.  Further attempts to use the iterator will result
  539.                 in an error.
  540.  
  541.  
  542. }
  543. FUNCTION FSObjectIteratorDispose(iterator_t: FSObjectIteratorObjID): OSStatus; C;
  544. FUNCTION FSObjectIteratorDisposeAsync(iterator_t: FSObjectIteratorObjID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  545. {  }
  546. FUNCTION FSObjectIteratorGetInformation(iterator_t: FSObjectIteratorObjID; VAR outermostScope_o: FSObjectRef; VAR currentScope_o: FSObjectRef; VAR options_o: FSObjectIteratorCreationOptions; VAR state_o: FSObjectIteratorState): OSStatus; C;
  547. FUNCTION FSObjectIteratorGetInformationAsync(iterator_t: FSObjectIteratorObjID; {CONST}VAR completion_i: KernelNotification; VAR outermostScope_o: FSObjectRef; VAR currentScope_o: FSObjectRef; VAR options_o: FSObjectIteratorCreationOptions; VAR state_o: FSObjectIteratorState; VAR requestID_o: MessageID): OSStatus; C;
  548. {  }
  549. FUNCTION FSObjectIteratorRecreate(iterator_t: FSObjectIteratorObjID; outermostScope_i: FSObjectRef; preserveCurrentOptions_i: BOOLEAN; options_i: FSObjectIteratorCreationOptions): OSStatus; C;
  550. FUNCTION FSObjectIteratorRecreateAsync(iterator_t: FSObjectIteratorObjID; outermostScope_i: FSObjectRef; preserveCurrentOptions_i: BOOLEAN; options_i: FSObjectIteratorCreationOptions; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  551. {
  552.     Function:    FSObjectIteratorRestart
  553.     Purpose:    Place an object iterator in the Start Of Iterator state, in its current scope.
  554.     Inputs:
  555.                 iterator_t        The object iterator.
  556.     Outputs:
  557.     Notes:
  558.                 The iterator is not positioned on any object.  The iterator is put into "Start Of
  559.                 Iteration" state, meaning that all objects in the current scope have yet to be
  560.                 returned.
  561.                 
  562.                 You would use this call to completely restart iteration within the current scope,
  563.                 ignoring any state about objects previously returned in the current scope.  The
  564.                 outermost scope is not affected.  State information about which objects have been
  565.                 returned from scopes outside the current scope is unchanged.
  566. }
  567. FUNCTION FSObjectIteratorRestart(iterator_t: FSObjectIteratorObjID): OSStatus; C;
  568. FUNCTION FSObjectIteratorRestartAsync(iterator_t: FSObjectIteratorObjID; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  569. {
  570. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  571.     Object Resolution
  572. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  573. }
  574. {
  575.     Function:    FSObjectExchange
  576.     Purpose:    Exchange the properties of two objects.  Typically used for "safe
  577.                 saving", while maintaining an object's persistent reference.
  578.     Inputs:
  579.                 object1_i        One object.
  580.                 object2_i        The object to exchange it with.
  581.     Outputs:
  582.     Notes:
  583.                 This call is used to allow a "safe save" that preserves an object's
  584.                 persistent reference.  For example, you might want to save an updated
  585.                 set of properties to an object so that any errors while saving result
  586.                 in the object being unchanged; but, you also want the object's persistent
  587.                 reference to remain unchanged (so that things like aliases still work).
  588.                 
  589.                 What you would do is create a second object somewhere (in a temporary
  590.                 folder, for example).  Write out all of the properties, both unchanged
  591.                 and changed, to the second object.  When done saving, you would call
  592.                 FSObjectExchange with both objects; the contents of the two objects get
  593.                 swapped in such a way that the original object has the new properties,
  594.                 but retains its old persistent reference.
  595.  
  596.  
  597. }
  598. FUNCTION FSObjectExchange(object1_i: FSObjectRef; object2_i: FSObjectRef): OSStatus; C;
  599. FUNCTION FSObjectExchangeAsync(object1_i: FSObjectRef; object2_i: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  600. {
  601.     Function:    FSObjectRefGetFSSpec
  602.     Purpose:    Return an FSSpec for an object (suitable for use with the Files API).
  603.     Inputs:
  604.                 object_t            The object.
  605.     Outputs:
  606.                 fSSpec_o            An FSSpec that specifies the same object as object_t,
  607.                                     suitable for use with the Files API.
  608.     Notes:
  609.                 This call is intended to be used by code that is required to use both the
  610.                 Files API and the FileManager API (or has clients that use both APIs).
  611.                 For example, a piece of code may already exist with an API that uses FSSpecs,
  612.                 but has been converted internally to use the FSObjectRefs; it would use this
  613.                 call to produce an FSSpec as an output for the pre-existing API.
  614.                 
  615.                 It would be best to provide an API that allows its clients to use FSObjectRefs.
  616. }
  617. FUNCTION FSObjectRefGetFSSpec(object_t: FSObjectRef; VAR fSSpec_o: FSSpec): OSStatus; C;
  618. FUNCTION FSObjectRefGetFSSpecAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR fSSpec_o: FSSpec; VAR requestID_o: MessageID): OSStatus; C;
  619. {  }
  620. FUNCTION FSObjectLocate(container_t: FSObjectRef; elementCount_i: ItemCount; {CONST}VAR pathway_i: FSObjectPathwayElement; {CONST}VAR pathwayPropertiesBuffer_i: FSBufferDescriptor; VAR object_o: FSObjectRef): OSStatus; C;
  621. FUNCTION FSObjectLocateAsync(container_t: FSObjectRef; elementCount_i: ItemCount; {CONST}VAR pathway_i: FSObjectPathwayElement; {CONST}VAR pathwayPropertiesBuffer_i: FSBufferDescriptor; {CONST}VAR completion_i: KernelNotification; VAR object_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  622. {  }
  623. FUNCTION FSObjectPersistentReferenceResolve(volume_t: FSVolumeObjID; {CONST}VAR persistentReference_i: FSObjectPersistentReference; VAR object_o: FSObjectRef): OSStatus; C;
  624. FUNCTION FSObjectPersistentReferenceResolveAsync(volume_t: FSVolumeObjID; {CONST}VAR persistentReference_i: FSObjectPersistentReference; {CONST}VAR completion_i: KernelNotification; VAR object_o: FSObjectRef; VAR requestID_o: MessageID): OSStatus; C;
  625. {   }
  626. FUNCTION FSObjectRefResolve(object_t: FSObjectRef; VAR objectsVolume_o: FSVolumeObjID; VAR objectsVolumeSet_o: FSVolumeSetObjID): OSStatus; C;
  627. FUNCTION FSObjectRefResolveAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR objectsVolume_o: FSVolumeObjID; VAR objectsVolumeSet_o: FSVolumeSetObjID; VAR requestID_o: MessageID): OSStatus; C;
  628. {
  629.     Function:    FSSpecGetFSObjectRef
  630.     Purpose:    Return an FSObjectRef for an object specified via an FSSpec.
  631.     Inputs:
  632.                 theFSSpec_t            An FSSpec for the object.
  633.     Outputs:
  634.                 theObject_o            An FSObjectRef for the object.
  635.     Notes:
  636.                 This call is intended to be used by code that is required to use both the
  637.                 Files API and the FileManager API (or has clients that use both APIs).
  638.                 For example, a piece of code may already exist with an API that uses FSSpecs,
  639.                 but has been converted internally to use the FSObjectRefs; it would use this
  640.                 call to take an input FSSpec and convert it to an FSObjectRef to use internally;
  641.                 the FSObjectRef would then be disposed before completing the call.
  642.                 
  643.                 It would be best to provide an API that allows its clients to use FSObjectRefs.
  644. }
  645. FUNCTION FSSpecGetFSObjectRef({CONST}VAR theFSSpec_t: FSSpec; VAR theObject_o: FSObjectRef): OSStatus; C;
  646. {   }
  647. FUNCTION FSUniverseResolve(VAR theUniverse_o: FSObjectRef): OSStatus; C;
  648. FUNCTION FSUniverseResolveAsync(VAR theUniverse_o: FSObjectRef; {CONST}VAR theCompletion_i: KernelNotification; VAR theRequestID_o: MessageID): OSStatus; C;
  649. { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> F a c i l i t i e s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }
  650. {
  651. ============================================================================
  652.     Cache Flush Routines
  653. ============================================================================
  654. }
  655. {
  656.     Function:    FSObjectFlush
  657.     Purpose:    Flushes any data cached by the File Manager for the given object.
  658.     Inputs:
  659.                 object_t        The object to be flushed.
  660.     Outputs:
  661.     Notes:
  662.                 If object_t is a file, then any data written to that file (via a stream or backing store,
  663.                 regardless of the process that opened the stream or backing store) will be written by the
  664.                 File Manager to any underlying device.  If object_t is a volume, then any data written to
  665.                 any file on that volume will be flushed.
  666.                 
  667.                 Any change to properties of object_t will be flushed (regardless of the object's type).
  668.                 
  669.                 Data about the object (or contained in the object) may still reside in the File Manager's
  670.                 caches, but any changes will have been written out by the File Manager.  Note that the
  671.                 underlying device's driver, or the device itself, may cache some data, so the File Manager
  672.                 cannot guarantee that all data has actually been written to the underlying media.
  673.  
  674.  
  675.  
  676. }
  677. FUNCTION FSObjectFlush(object_t: FSObjectRef): OSStatus; C;
  678. FUNCTION FSObjectFlushAsync(object_t: FSObjectRef; {CONST}VAR completion_i: KernelNotification; VAR requestID_o: MessageID): OSStatus; C;
  679. {
  680. ============================================================================
  681.     Request Cancellation Routines
  682. ============================================================================
  683. }
  684. {   }
  685. FUNCTION FSRequestCancel(theRequestID_i: MessageID): OSStatus; C;
  686. {
  687. ============================================================================
  688.     Object Property Sizes
  689. ============================================================================
  690. }
  691. {  }
  692. FUNCTION FSObjectGetForkPropertyPhysicalSizes(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  693. {  }
  694. FUNCTION FSObjectGetPropertySizes(object_t: FSObjectRef; propertyCount_i: ItemCount; {CONST}VAR properties_i: FSPropertyDescriptor; VAR propertiesBuffer_o: FSBufferDescriptor; VAR statusBuffer_o: FSBufferDescriptor): OSStatus; C;
  695. {$ENDC}
  696. {$ENDC}
  697. {$ALIGN RESET}
  698. {$POP}
  699.  
  700. {$SETC UsingIncludes := FileManagerSPIIncludes}
  701.  
  702. {$ENDC} {__FILEMANAGERSPI__}
  703.  
  704. {$IFC NOT UsingIncludes}
  705.  END.
  706. {$ENDC}
  707.